package com.kaigejava.demo.business.barrgelog.dto;

import com.kaigejava.demo.protobuf.Dy;
import lombok.Data;
import tech.ordinaryroad.live.chat.client.bilibili.msg.DanmuMsgMsg;
import tech.ordinaryroad.live.chat.client.douyu.msg.ChatmsgMsg;
import tech.ordinaryroad.live.chat.client.huya.msg.MessageNoticeMsg;

/**
 * @author 凯哥Java
 * @description 弹幕消息对象
 * @company
 * @since 2023/11/12 21:35
 */
@Data
public class DanMuMsgDTO {

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 弹幕内容
     */
    private String content;

    /**
     * 直播房间号
     */
    private Long roomId;


    /**
     * b站弹幕对象转换
     * @param msg       需要转换对象
     * @return          转换后对象
     */
    public static DanMuMsgDTO bilibiliLiveOf(DanmuMsgMsg msg,Long roomId){
        DanMuMsgDTO danMuMsgDTO = new DanMuMsgDTO();
        danMuMsgDTO.setUserId(msg.getUid());
        danMuMsgDTO.setContent(msg.getContent());
        danMuMsgDTO.setUserName(msg.getUsername());
        danMuMsgDTO.setRoomId(roomId);
        return danMuMsgDTO;
    }

    /**
     * 斗鱼弹幕对象转换
     * @param msg       需要转换对象
     * @return          转换后对象
     */
    public static DanMuMsgDTO douYUOf(ChatmsgMsg msg,Long roomId) {
        DanMuMsgDTO danMuMsgDTO = new DanMuMsgDTO();
        danMuMsgDTO.setUserId(msg.getUid());
        danMuMsgDTO.setContent(msg.getContent());
        danMuMsgDTO.setUserName(msg.getUsername());
        danMuMsgDTO.setRoomId(roomId);
        return danMuMsgDTO;
    }


    /**
     * 虎牙弹幕对象转换
     * @param msg       需要转换对象
     * @return          转换后对象
     */
    public static DanMuMsgDTO HuYaOf(MessageNoticeMsg msg,Long roomId) {
        DanMuMsgDTO danMuMsgDTO = new DanMuMsgDTO();
        danMuMsgDTO.setUserId(msg.getUid());
        danMuMsgDTO.setContent(msg.getContent());
        danMuMsgDTO.setUserName(msg.getUsername());
        danMuMsgDTO.setRoomId(roomId);
        return danMuMsgDTO;
    }

    /**
     * 抖音弹幕对象转换
     * @param msg       需要转换对象
     * @return          转换后对象
     */
    public static DanMuMsgDTO douYinOf(Dy.ChatMessage msg,Long  roomId) {
        DanMuMsgDTO danMuMsgDTO = new DanMuMsgDTO();
        danMuMsgDTO.setUserId(msg.getUser().getId());
        danMuMsgDTO.setContent(msg.getContent());
        danMuMsgDTO.setUserName(msg.getUser().getNickName());
        danMuMsgDTO.setRoomId(roomId);
        return danMuMsgDTO;
    }
}
